package modelo;
// Generated 26/04/2014 23:46:36 by Hibernate Tools 3.6.0

import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 * Usuario generated by hbm2java
 */
@Entity
@Table(name = "usuario", catalog = "sistemagestao"
)
public class Usuario implements java.io.Serializable {

    private String nomeUsuario;
    private Funcao funcao;
    private String senha;
    private char estado;
    private Date dataCriacao;
    private String nome;
    private String cpf;
    private String endereco;
    private String email;
    private String telefone;
    private Set reservas = new HashSet(0);

    public Usuario() {
        this.funcao = new Funcao();
    }

    public Usuario(String nomeUsuario, Funcao funcao, String senha, char estado, Date dataCriacao, String nome, String cpf, String email) {
        this.nomeUsuario = nomeUsuario;
        this.funcao = funcao;
        this.senha = senha;
        this.estado = estado;
        this.dataCriacao = dataCriacao;
        this.nome = nome;
        this.cpf = cpf;
        this.email = email;
    }

    public Usuario(String nomeUsuario, Funcao funcao, String senha, char estado, Date dataCriacao, String nome, String cpf, String endereco, String email, String telefone, Set reservas) {
        this.nomeUsuario = nomeUsuario;
        this.funcao = funcao;
        this.senha = senha;
        this.estado = estado;
        this.dataCriacao = dataCriacao;
        this.nome = nome;
        this.cpf = cpf;
        this.endereco = endereco;
        this.email = email;
        this.telefone = telefone;
        this.reservas = reservas;
    }

    public Usuario(String nomeUsuario, Funcao funcao, String senha, char estado, Date dataCriacao,
            String nome, String cpf, String endereco, String email, String telefone) {
        this.nomeUsuario = nomeUsuario;
        this.funcao = funcao;
        this.senha = senha;
        this.estado = estado;
        this.dataCriacao = dataCriacao;
        this.nome = nome;
        this.cpf = cpf;
        this.endereco = endereco;
        this.email = email;
        this.telefone = telefone;
    }

    @Id
    @Column(name = "nome_usuario", unique = true, nullable = false, length = 20)
    public String getNomeUsuario() {
        return this.nomeUsuario;
    }

    public void setNomeUsuario(String nomeUsuario) {
        this.nomeUsuario = nomeUsuario;
    }

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "cod_funcao", nullable = false)
    public Funcao getFuncao() {
        return this.funcao;
    }

    public void setFuncao(Funcao funcao) {
        this.funcao = funcao;
    }

    @Column(name = "senha", nullable = false, length = 20)
    public String getSenha() {
        return this.senha;
    }

    public void setSenha(String senha) {
        this.senha = senha;
    }

    @Column(name = "estado", nullable = false, length = 1)
    public char getEstado() {
        return this.estado;
    }

    public void setEstado(char estado) {
        this.estado = estado;
    }

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "data_criacao", nullable = false, length = 19)
    public Date getDataCriacao() {
        return this.dataCriacao;
    }

    public void setDataCriacao(Date dataCriacao) {
        this.dataCriacao = dataCriacao;
    }

    @Column(name = "nome", nullable = false, length = 60)
    public String getNome() {
        return this.nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    @Column(name = "cpf", nullable = false, length = 20)
    public String getCpf() {
        return this.cpf;
    }

    public void setCpf(String cpf) {
        this.cpf = cpf;
    }

    @Column(name = "endereco", length = 80)
    public String getEndereco() {
        return this.endereco;
    }

    public void setEndereco(String endereco) {
        this.endereco = endereco;
    }

    @Column(name = "email", nullable = false, length = 60)
    public String getEmail() {
        return this.email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    @Column(name = "telefone", length = 20)
    public String getTelefone() {
        return this.telefone;
    }

    public void setTelefone(String telefone) {
        this.telefone = telefone;
    }

    @OneToMany(fetch = FetchType.LAZY, mappedBy = "usuario")
    public Set getReservas() {
        return this.reservas;
    }

    public void setReservas(Set reservas) {
        this.reservas = reservas;
    }

}
